Skip to main content

Veri Yapıları

Integer

Integer'lar, Türkçede tam sayılar olarak çevrilmektedir ve sonsuz sayıda pozitif veya negatif değer alabilirler. Yanlarında herhangi bir işaret olmadan, doğrudan sayılar olarak ifade edilirler.

a = 5
b = -5
c = 20+12 #32

print(type(a))
print(type(b))
print(type(c))

class 'int'
class 'int'
class 'int'

Burada, a, b ve c değişkenleri integer tipindedir ve onların veri türleri int olarak gösterilmiştir.

Float

Float, Türkçeye ondalıklı sayı olarak çevrilebilir. Float'lar, reel sayıları ifade eder ve belirli bir limitleri vardır. Sayıların başlarında veya içlerinde bir nokta (.) ile ifade edilirler.

import math

a = 5.3
b = math.pi
c = .123123
d = 123456.123456
e = .1322 + 1.2314

print(type(a))
print(type(b))
print(b)
print(type(c))
print(type(d))
print(type(e))

class 'float'
class 'float'
3.141592653589793
class 'float'
class 'float'
class 'float'

Burada, a, b, c, d, ve e değişkenleri float tipindedir. Özellikle b değişkeni, math.pi ile matematiksel bir sabit olan Pi sayısını temsil eder.

String

String veri tipleri, Türkçede karakter dizileri olarak tanımlanır ve yan yana sıralanmış karakter dizilerini ifade eder. Tek veya çift tırnaklar ile tanımlanabilirler.

a = "Melike Gökdemir"
b = '123456789'
c = "c2151c2x---+-*/^^^+%&"
d = " Türkiye Cumhuriyetinin kurucusu 'Mustafa Kemal ATATÜRK' tür. "
e = """ Her şeyi iyi yanından görmeyi kim öğretti bize?
Acıyı
görmeyen insan, umutsuzluğu yaşamayan, iliklerine dek
kederin işleyip yaralamadığı bir insan, mutluluktan,
umuttan, sevinçten ne anlar? Göğü görmeden, denizi gör-
meden maviyi anlamaya benzemez mi bu? """

print(e)

Her şeyi iyi yanından görmeyi kim öğretti bize?
Acıyı
görmeyen insan, umutsuzluğu yaşamayan, iliklerine dek
kederin işleyip yaralamadığı bir insan, mutluluktan,
umuttan, sevinçten ne anlar? Göğü görmeden, denizi gör-
meden maviyi anlamaya benzemez mi bu?

Bu kodda, e değişkeni bir metin bloğunu temsil eder ve çok satırlı stringler üç çift tırnak ile tanımlanır.

my_string = "Python'da \"string\" ifadeleri kullanmak çok kolay!"
print(my_string)

Python'da "string" ifadeleri kullanmak çok kolay!

caution

Yukarıdaki örnekte görüldüğü gibi, eğer bir string içinde çift tırnak kullanmak istiyorsak, bu karakterin önüne ters eğik çizgi () koyarak kaçış (escape) karakteri olarak belirtmemiz gerekir.

a = "Merhaba"
b = "Dünya"
c = a + " " + b + "!"
print(c)

d = "xyz"
e = d * 3
print(e)

f = "Merhaba"
print(len(f)) # len() fonksiyonu: Bu fonksiyon karakter diziler

inin (ve başka veri tiplerinin) uzunluğunu ölçer.

Merhaba Dünya!
xyzxyzxyz
7

Bu kod bloğunda, stringlerin birleştirilmesi, çoğaltılması ve uzunluklarının nasıl ölçüldüğü gösterilmiştir. len() fonksiyonu, bir stringin uzunluğunu, yani içerdiği karakter sayısını döndürür.

Listeler

Listeler, birden fazla veri tipini bir arada tutabilen, değiştirilebilir (mutable) veri yapılarıdır. Listeler köşeli parantezler ile tanımlanır ve içerisindeki öğeler virgül ile ayrılır.

my_list = [1, 2, 3, "dört", "beş", ["Ankara", "İzmir", "İstanbul"]]
print(type(my_list))
print(my_list)

class 'list'
[1, 2, 3, 'dört', 'beş', ['Ankara', 'İzmir', 'İstanbul']]

Yukarıda my_list, çeşitli tiplerde veri içeren bir liste örneğidir. Bu liste içinde başka bir liste de bulunmaktadır.

liste = [] # Boş liste
print(liste)

[]

Bu kod, boş bir liste oluşturur ve yazdırır.

a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(c)

d = ["x", "y", "z"]
e = d * 3
print(e)

f = [1, 2, 3, "dört", "beş"]
print(len(f))

[1, 2, 3, 4, 5, 6]['x', 'y', 'z', 'x', 'y', 'z', 'x', 'y', 'z']
5

Bu kod bloğunda, listelerin nasıl birleştirilebileceği, çoğaltılabileceği ve uzunluklarının nasıl ölçülebileceği gösterilmektedir.

alfabe = "abcçdefgğhıijklmnoöprsştuüvyz"
print(alfabe)

abcçdefgğhıijklmnoöprsştuüvyz

Bu, bir alfabe stringidir.

harf_listesi = list(alfabe) # Alfabe stringini liste dönüştürüyoruz.
print(harf_listesi)

['a', 'b', 'c', 'ç', 'd', 'e', 'f', 'g', 'ğ', 'h', 'ı', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'ö', 'p', 'r', 's', 'ş', 't', 'u', 'ü', 'v', 'y', 'z']

Bu kod, bir stringi list() fonksiyonu kullanarak listeye dönüştürür.

isimler = "ahmet mehmet cem"
print(isimler.split()) # Stringi boşluk karakterine göre bölerek listeye dönüştürüyoruz.

['ahmet', 'mehmet', 'cem']

Bu kod, split() metodu ile bir stringi boşluklara göre ayırarak bir liste oluşturur.

caution

split() ve list() metodlarının farkı: split() metodu, bir stringi belirli bir ayırıcıya göre parçalara ayırır ve sonuç olarak bir liste döndürür. list() fonksiyonu ise verilen bir diziyi (string, tuple vb.) doğrudan bir listeye dönüştürür.

meyveler = ["elma", "armut", "çilek", "kiraz"]
print(meyveler[0]) # Listede 0. indekse erişiyoruz.

'elma'

Bu kod, meyveler listesinin ilk öğesine erişir.

my_list = [1, 2, 3, "dört", "beş", ["Ankara", "İzmir", "İstanbul"]]
print(my_list[5]) # Listede 5. indekse erişiyoruz, bu da başka bir liste.

['Ankara', 'İzmir', 'İstanbul']

Bu kod, my_list listesinin altındaki bir listeye erişir.

my

_list = [1, [2, 3, 4], 5, [6, 7, 8, 9], 10]
print(my_list[1]) # İç içe listelerden birinci elemanı alır.
print(my_list[1][0]) # İç içe listelerin içindeki ilk elemanı alır.

[2, 3, 4]
2

Bu kod, iç içe listelere erişim örneklerini gösterir.

Listelerin Öğelerini Değiştirmek

renkler = ["kırmızı", "sarı", "mavi", "yeşil", "beyaz"]
print(renkler)

['kırmızı', 'sarı', 'mavi', 'yeşil', 'beyaz']

Bu kod, renkler adlı bir liste oluşturur ve yazdırır.

renkler[0] = "siyah"
print(renkler)

['siyah', 'sarı', 'mavi', 'yeşil', 'beyaz']

Bu kod, listelerdeki öğelerin nasıl değiştirilebileceğini gösterir. Burada renkler listesinin ilk öğesi değiştirilmiştir.

danger

Liste indeksleri dışında bir değere atama yaparsanız, IndexError alırsınız.

Listeye Öğe Eklemek

liste = [2, 4, 5, 7, "ezgi"]
liste + [8] # Listeye yeni bir öğe eklemek için, eklemek istediğiniz öğeyi köşeli parantez içinde belirtmelisiniz.

[2, 4, 5, 7, 'ezgi', 8]

Bu kod, bir listeye yeni bir öğe ekler.

danger

Bir listeye doğrudan bir string eklemeye çalışırsanız TypeError alırsınız. Listeler yalnızca diğer listelerle birleştirilebilir.

Listeleri Birleştirmek

gokyuzu = ["bulut", "kuş", "yıldız", "güneş", "ay", "gezegenler"]
yeryuzu = ["insan", "kara parçaları", "toprak", "nesneler", "su"]
dunya = yeryuzu + gokyuzu
print(dunya)

['insan', 'kara parçaları', 'toprak', 'nesneler', 'su', 'bulut', 'kuş', 'yıldız', 'güneş', 'ay', 'gezegenler']

Bu kod, iki listeyi birleştirerek yeni bir liste oluşturur.

Tuple (Demetler)

Tuple'lar, birden fazla veri tipi barındıran ve değiştirilemeyen (immutable) veri tipleridir. Tuple'lar tanımlanırken normal parantez kullanılır ve öğeler virgülle ayrılır.

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[2])

3

Bu kod, tuple'ın üçüncü öğesine (indeks numarası 2 olan) erişir ve yazdırır.

my_tuple = (1, "hello", True, 3.14)
print(my_tuple)

(1, 'hello', True, 3.14)

Bu kod, farklı veri tiplerini içeren bir tuple örneğini gösterir.

Demetlerle Listelerin Farkı

Listeler değiştirilebilirken (mutable), demetler değiştirilemez (immutable). Yani demetler, tanımlandıktan sonra içerikleri üzerinde değişiklik yapılamaz.

demet = ('elma', 'armut', 'kiraz')
demet[0] = 'karpuz'

Bu kod çalıştırıldığında bir TypeError hatası alınır çünkü demetlerde öğe değiştirme işlemi yapılamaz.

Dictionary (Sözlük)

Sözlükler, anahtar-değer çiftlerinden oluşur. Bu yapısı ile benzersiz bir anahtara karşılık gelen bir değeri saklar.

my_dict = {}

manav_fiyatlari = {"elma": 2, "portakal": 1, "muz": 3, "armut": 4}

print(type(manav_fiyatlari))
print(manav_fiyatlari["elma"])
print(manav_fiyatlari["muz"])
print(manav_fiyatlari["portakal"])
print(manav_fiyatlari.items())

class 'dict' 2
3
1
dict_items([('elma', 2), ('portakal', 1), ('muz', 3), ('armut', 4)])

Sözlükler, veri saklama ve hızlı erişim için optimize edilmiştir. Anahtar değerlerine göre hızlıca öğelere erişebiliriz.

sorted_dict = dict(sorted(manav_fiyatlari.items()))
print(sorted_dict)

{'armut': 4, 'elma': 2, 'muz': 3, 'portakal': 1}

Bu kod, sözlüğü anahtarlara göre sıralar.

user = {"name": "John Doe", "age": 30, "email": "[email protected]"}

print(user["name"])
print(user["age"])
print(user["email"])

John Doe
30
[email protected]

Bu kod, sözlüğün anahtarlarını kullanarak ilgili değerlere erişir ve onları yazdırır.

Kümeler (Set)

Python'daki kümeler, matematikteki kümelerle benzer özelliklere sahiptir; benzersiz elemanları saklar ve sırasızdır.

my_set1 = set([1, 2, 3, 4, 5])
my_set2 = {1, 2, 3, 4, 5}
print(type(my_set1))
print(type(my_set2))

class 'set' class 'set'

Bu kodlar, Python'da küme oluşturmanın iki farklı yolunu gösterir.

danger

Boş bir küme oluşturmak için set() fonksiyonunu kullanmalısınız; {} kullanırsanız boş bir sözlük oluşturulur.

küme = set()
print(type(küme))

class 'set'

Bu kod, boş bir küme oluşturur.

set1 = {1, 2, 3}
set2 = {3, 4, 5}

print(set1 | set

2) # İki kümenin birleşimi
print(set1 & set2) # İki kümenin kesişimi
print(set1 - set2) # İlk kümede olup ikinci kümede olmayan elemanlar
print(set2 - set1) # İkinci kümede olup ilk kümede olmayan elemanlar

{1, 2, 3, 4, 5}
{3}
{1, 2}
{4, 5}

Bu kodlar, kümeler üzerinde birleşim, kesişim ve fark işlemlerini gösterir.

Boolean

Boolean değerleri yalnızca True ve False olmak üzere iki değeri alır. True 1 değerine eşdeğerken, False 0 değerine eşdeğerdir. Bu değerler genellikle koşullu ifadelerde ve mantıksal operasyonlarda kullanılır.

x = 10
y = 5

is_greater = x > y
print(is_greater)

is_equal = x == y
print(is_equal)

is_not_equal = x != y
print(is_not_equal)

is_even = x % 2 == 0
print(is_even)

True
False
True
True

Bu kod bloğu, çeşitli boolean ifadelerin nasıl kullanıldığını ve değerlendirildiğini gösterir.

Kullanıcıdan Veri Almak

Python'da kullanıcıdan veri almak için input() fonksiyonu kullanılır. Bu fonksiyon, kullanıcıdan bir giriş alır ve bu girişi bir string olarak döndürür.

name = input("Adınız nedir? ")
print("Merhaba, " + name)

Adınız nedir? mehmet
Merhaba, mehmet

Bu kod, kullanıcıdan isim alır ve selamlar.

age = input("Yasiniz kac? ")
print("Yaşım : ", age)

Yasiniz kac? 25
Yaşım : 25

Kullanıcıdan yaşını alır ve yazdırır. age değişkeninin tipi str (string) olacaktır.

print(type(age))

class 'str'

Kullanıcının yaşının veri tipini gösterir.

print(f"{name} : {age}")

mehmet : 25

Kullanıcı adı ve yaşı ile bir cümle oluşturur.

danger

String ve integer türündeki verileri doğrudan birleştirmeye çalışmak TypeError hatasına neden olur.

Veri Dönüşümleri

Python'da bir veri tipini diğerine dönüştürmek, bazı işlemleri gerçekleştirmede önemlidir. Örneğin, kullanıcıdan alınan bir sayı ile matematiksel bir işlem yapmak istiyorsak, bu sayıyı string'den integer'a dönüştürmemiz gerekir.

age = int(age)  # Kullanıcının yaşını integer'a çevirir
print(type(age))

class 'int'

Bu kod, age değişkenini string'den integer'a dönüştürür ve veri tipini yazdırır.

print(f"{name} : {age + 10}")

ahmet : 35

Yaşa 10 ekler ve sonucu yazdırır. Bu işlemi yapabilmek için age değişkeninin integer türünde olması gerekmektedir.

input() fonksiyonundan gelen veri her zaman bir karakter dizisidir (string). Bu nedenle, bu fonksiyondan gelen veriyle herhangi bir aritmetik işlem yapabilmek için, bu veriyi önce bir sayıya dönüştürmemiz gerekir. Sayısal bir değere dönüştürmek için int() fonksiyonunu kullanırız.

# Daire alanı hesaplama:

çap = input("Dairenin çapı: ")
yarıçap = int(çap) / 2

# Pi sayımız sabit
pi = 3.14159

alan = pi * (yarıçap ** 2)

print("Çapı", çap, "cm olan dairenin alanı:", alan, "cm²'dir.")

Dairenin çapı: 12
Çapı 12 cm olan dairenin alanı: 113.09724 cm²'dir.

Bu kod, kullanıcıdan bir dairenin çapını alır, yarıçapı hesaplar ve dairenin alanını bulur.

Sayısal değerlerle çalışırken, veri tipinin uygun olması gerekmektedir. Bir string ifadeyi int'e veya float'a dönüştüremeyiz eğer bu string sayısal bir ifade içermiyorsa.

meyve = "elma"
tip_degisimi_elma = int(meyve)

Bu kod bir ValueError hatası alır çünkü 'elma' bir sayısal değer değildir ve int() ile sayıya dönüştürülemez.

sayi = input("Karesini almak istediğiniz sayıyı giriniz: ")
sonuc = int(sayi) ** 2
print(f'{sayi} nin karesi: {sonuc}')

Karesini almak istediğiniz sayıyı giriniz: 23
23 nin karesi: 529

Bu kod, kullanıcıdan bir sayı alır, bu sayının karesini hesaplar ve sonucu yazdırır.

sayi = 9563215465487987654132

Bu bir integer (tam sayı) örneğidir.

print(len(sayi)) # len() fonksiyonu sadece stringlerde (karakter dizilerinde) kullanılır!

Bu kod, bir TypeError hatası alır çünkü len() fonksiyonu bir integer üzerinde kullanılamaz.

sayi = str(sayi)

Bu kod, sayıyı bir string'e (karakter dizisine) dönüştürür.

print(len(sayi))

22

Bu kod, dönüştürülen string'in uzunluğunu, yani kaç karakterden oluştuğunu yazdırır.

num1 = 5
birinci_type = type(num1)
num2 = float(num1)
ikinci_type = type(num2)
print(birinci_type)
print(ikinci_type)

class 'int'
class 'float'

Bu kod bloğu, num1 değişkeninin veri tipini ve num2 değişkenine dönüştürüldükten sonra elde edilen yeni veri tipini yazdırır. Burada num1 bir tam sayıdan (int) ondalıklı bir sayıya (float) dönüştürülmüştür.